#include<bits/stdc++.h>
#define ll long long
#define N 3005
using namespace std;
int n,m;
int f[N][N],g[N][N][2];
int sum[N][N][2];
int a[N][N],b[N][N],c[N][N],d[N][N];
ll ans;
char s[N][N];
void sol(int l,int r,int L,int R){
    if(l>r||L>R) return;
    for(int i=l;i<=r;i++)
        for(int j=L;j<=R;j++)
            f[i][j]=0;
    if(r-l>R-L){
        int mid=(l+r)/2;
        for(int i=L;i<=R;i++)
            for(int j=L;j<=R;j++)
                g[i][j][0]=g[i][j][1]=sum[i][j][0]=sum[i][j][1]=0;
        for(int j=L;j<=R;j++){
            f[mid][j]=1;
            for(int i=mid+1;i<=r&&s[i][j]==s[mid][j];i++) f[i][j]=1;
            for(int i=mid-1;i>=l&&s[i][j]==s[mid][j];i--) f[i][j]=1; 
        }
        for(int j=L;j<=R;j++){
            for(int i=mid+1;i<=r;i++){
                sum[j][max(b[i][j],L)][0]+=f[i][j];
                sum[j][min(d[i][j],R)][1]+=f[i][j];
            }
            for(int i=L+1;i<=R;i++) sum[j][i][0]+=sum[j][i-1][0];
            for(int i=R-1;i>=L;i--) sum[j][i][1]+=sum[j][i+1][1];
        }
        for(int i=L;i<=R;i++){
            for(int j=i+1;j<=R;j++){
                if(c[mid][i]>c[mid][j]) g[i][j][1]+=sum[j][i][0];
                else g[i][j][1]+=sum[i][j][1];
            }
        }
        for(int i=L;i<=R;i++)
            for(int j=L;j<=R;j++)
                sum[i][j][0]=sum[i][j][1]=0;
        for(int j=L;j<=R;j++){
            for(int i=mid-1;i>=l;i--){
                sum[j][max(b[i][j],L)][0]+=f[i][j];
                sum[j][min(d[i][j],R)][1]+=f[i][j];
            }
            for(int i=L+1;i<=R;i++) sum[j][i][0]+=sum[j][i-1][0];
            for(int i=R-1;i>=L;i--) sum[j][i][1]+=sum[j][i+1][1];
        }
        for(int i=L;i<=R;i++){
            for(int j=i+1;j<=R;j++){
                if(a[mid][i]<a[mid][j]) g[i][j][0]+=sum[j][i][0];
                else g[i][j][0]+=sum[i][j][1];
            }
        }
        for(int i=L;i<=R;i++){
            for(int j=i+1;j<=R;j++){
                if(s[mid][i]!=s[mid][j]) continue;
                ans+=1ll*g[i][j][0]*g[i][j][1];
                if(b[mid][j]<=i) ans+=g[i][j][0]+g[i][j][1];
            }
        }
        sol(l,mid-1,L,R);
        sol(mid+1,r,L,R);
    }
    else{
        int mid=(L+R)/2;
        for(int i=l;i<=r;i++)
            for(int j=l;j<=r;j++)
                g[i][j][0]=g[i][j][1]=sum[i][j][0]=sum[i][j][1]=0;
        for(int i=l;i<=r;i++){
            f[i][mid]=1;
            for(int j=mid+1;j<=R&&s[i][j]==s[i][mid];j++) f[i][j]=1;
            for(int j=mid-1;j>=L&&s[i][j]==s[i][mid];j--) f[i][j]=1; 
        }
        for(int i=l;i<=r;i++){
            for(int j=mid+1;j<=R;j++){
                sum[i][max(a[i][j],l)][0]+=f[i][j];
                sum[i][min(c[i][j],r)][1]+=f[i][j];
            }
            for(int j=l+1;j<=r;j++) sum[i][j][0]+=sum[i][j-1][0];
            for(int j=r-1;j>=l;j--) sum[i][j][1]+=sum[i][j+1][1];
        }
        for(int i=l;i<=r;i++){
            for(int j=i+1;j<=r;j++){
                if(d[i][mid]>d[j][mid]) g[i][j][1]+=sum[j][i][0];
                else g[i][j][1]+=sum[i][j][1];
            }
        }
        for(int i=l;i<=r;i++)
            for(int j=l;j<=r;j++)
                sum[i][j][0]=sum[i][j][1]=0;
        for(int i=l;i<=r;i++){
            for(int j=mid-1;j>=L;j--){
                sum[i][max(a[i][j],l)][0]+=f[i][j];
                sum[i][min(c[i][j],r)][1]+=f[i][j];
            }
            for(int j=l+1;j<=r;j++) sum[i][j][0]+=sum[i][j-1][0];
            for(int j=r-1;j>=l;j--) sum[i][j][1]+=sum[i][j+1][1];
        }
        for(int i=l;i<=r;i++){
            for(int j=i+1;j<=r;j++){
                if(b[i][mid]<b[j][mid]) g[i][j][0]+=sum[j][i][0];
                else g[i][j][0]+=sum[i][j][1];
            }
        }
        for(int i=l;i<=r;i++){
            for(int j=i+1;j<=r;j++){
                if(s[i][mid]!=s[j][mid]) continue;
                ans+=1ll*g[i][j][0]*g[i][j][1];
                if(a[j][mid]<=i) ans+=g[i][j][0]+g[i][j][1];
            }
        }
        sol(l,r,L,mid-1);
        sol(l,r,mid+1,R);
    }
}
signed main(){
    freopen("star.in","r",stdin);
    freopen("star.out","w",stdout);
    scanf("%d %d",&n,&m);
    for(int i=1;i<=n;i++) scanf("%s",s[i]+1);
    for(int i=1;i<=n;i++)
        for(int j=1;j<=m;j++)
            a[i][j]=c[i][j]=i,b[i][j]=d[i][j]=j;
    for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            if(i>1&&s[i][j]==s[i-1][j]) a[i][j]=a[i-1][j];
            if(j>1&&s[i][j]==s[i][j-1]) b[i][j]=b[i][j-1];
        }
    }
    for(int i=n;i>=1;i--){
        for(int j=m;j>=1;j--){
            if(i<n&&s[i][j]==s[i+1][j]) c[i][j]=c[i+1][j];
            if(j<m&&s[i][j]==s[i][j+1]) d[i][j]=d[i][j+1];
        }
    }
    sol(1,n,1,m);
    printf("%lld\n",ans);
    return 0;
}